package cn.edu.zsc.rbac.view;

import cn.edu.zsc.rbac.domain.vo.BaseVo;
import cn.edu.zsc.rbac.domain.vo.Result;
import cn.edu.zsc.rbac.service.IBaseService;


/**
 * 视图层-基类
 *
 * @author 陈奕君
 * @since 2025/5/19 14:03
 */
public abstract class BaseView<Vo extends BaseVo, IService extends IBaseService> {

    IService service;

    Vo[] cache;

    void printError(String message) {
        System.out.println("\033[31m" + message + "\033[0m");
    }

    Vo getCacheById() {
        System.out.println("请输入部门ID:");
        if (!MainView.input.hasNextInt()) {
            MainView.input.nextLine();
            printError("部门ID必须为整数，请重新输入！");
            return null;
        }

        int id = MainView.input.nextInt();
        MainView.input.nextLine();

        if (id < 1) {
            printError("部门ID必须大于0，请重新输入！");
            return null;
        }

        if (cache == null) {
            Result result = service.list();
            cache = (Vo[]) result.data;
        }
        Vo vo = null;
        for (Vo item : cache) {
            if (item.id == id) {
                // 使用当前循环变量 item 打印信息，而不是未初始化的 dept
                System.out.println("该ID对应的数据是：");
                System.out.println(item);
                vo = item; // 将匹配到的对象赋值给 dept
                break;
            }
        }

        if (vo == null) {
            printError("该ID对应的数据不存在！");
            return null;
        }

        return vo;
    }
}
